接續上一篇的關於保留美好回憶這件小事(2),那麼在有了影像之後,該如何留存文字及數據呢?讓我繼續娓娓道來 :
此篇重點主要是著重在Unity遊戲中的數據存取,以及如何做資料的處理
我們先來假設我們今天要做的一個場景是人物基本資訊,而人物的資訊如下面所示
為此我們要新增一個class,裡面包含這些物件屬性的類別
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class player {
public string name;
public int level;
public float attack;
public float defence;
}
接下來就是要做建立資料的動作,先開新的一個script
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
public class SaveData : MonoBehaviour {
void Start(){
//建立一個player物件
player p1 = new player();
//設置各屬性
p1.name = "Tom";
p1.level = 50;
p1.attack = 600;
p1.defence = 200;
//將此player裡面的屬性轉成string(json格式)
string saveString = JsonUtility.ToJson(p1);
}
}
做好此動作後就是要將json格式的string存到asset裡面,我們先在unity 專案內部新增一個GameJSONData的資料夾以供儲存地使用,接著將剛剛的code多加這幾行 :
//將字串saveString存到硬碟中
StreamWriter file = new
StreamWriter(System.IO.Path.Combine("Assets/GameJSONData", "Player1.json"));
file.Write(saveString);
file.Close();
如此一來整個架構會變成 :
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
public class SaveData : MonoBehaviour {
void Start(){
//建立一個player物件
player p1 = new player();
//設置p1內的各屬性
p1.name = "Tom";
p1.level = 50;
p1.attack = 600;
p1.defence = 200;
//將此player裡面的屬性轉成string(json格式)
string saveString = JsonUtility.ToJson(p1);
//將字串saveString存到硬碟中
StreamWriter file = new StreamWriter(System.IO.Path.Combine("Assets/GameJSONData", "Player1.json"));
file.Write(saveString);
file.Close();
}
}
另外一方面,若是要在人物身上增加他所擁有的裝備我們可以在新增一個class叫做equipment(甚麼名字都行)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class equipment{
public string equipmentName;
public int limitLevel;
public int attack;
}
而在人物player.cs這邊,我們新增一個List屬性
public List equipment = new List();
在SaveData的code我們新增下面幾段
equipment eq1 = new equipment();
eq1.attack = 87;
eq1.limitLevel = 50;
eq1.equipmentName = "Excalibur";
p1.equipment.Add(eq1);
這樣就可以在GameJSONData的資料夾中發現有一個新的json檔,裡面的文字如下
{"name":"Tom","level":50,"attack":600.0,"defence":200.0,"equipment":[{"equipmentName":"Excalibur","limitLevel":50,"attack":87}]}
可以發現很順利的把角色資訊存進去了!